Referring to FIG. 1, “streaming” refers to the process of delivering serialized information 110, especially encoded sound, video, or multimedia (referred to herein as a “stream”), in a more or less steady and more or less ordered flow that the recipient, e.g., a client/player 120, can access as the stream 110 is being transmitted, e.g., after intermediate storage in a buffer 130. The word “streamed” is usually applied to information distributed over information technology (IT) networks, as most other delivery systems are either inherently streaming (e.g., broadcast radio and television) or inherently non-streaming (e.g., books, video cassettes). While the inherently streaming media are primarily deterministic in nature, the communications medium for streaming over IT networks, e.g., wired and wireless portions of the Internet and 3G wireless communications infrastructure, are less deterministic and more subject to variable connectivity.
Streaming is typically conducted using a stream server 140 that delivers the stream 110 as a series of messages to the client 120. The server 140 and the client 120 exchange command and status information 150, typically via the same communication media used for delivering the stream 110. Examples of video formats for streamed information include Adobe Flash® Video (FLV), Apple Computer Quicktime™ video, Microsoft Windows™ Media Video (WMV), and Real Networks Inc. Realvideo™. The client 120 typically is at some distance from the server 140.
Typically to begin a stream, the client 120 transmits to the stream server 140 a command 150, specifying the content and a position within the content from which to begin streaming. This causes the server 140 to begin streaming information 110 to the client 120. When a threshold amount, e.g., tt, of the information 110 has been downloaded to a buffer 130 in volatile memory at the client 120, the client 120 begins playing the content, e.g., from t0 by positioning a playhead 122 of the client at t0 and playing in the direction of tm. Typically, based on exchange of command and status information 150 between the client 120 and the server 140, the server 140 attempts to keep the buffer 130 supplied with sufficient data so that normal speed playback can be sustained. However, to conserve server processing resources and communications channel bandwidth, the client 120 and the server 140 also cooperate to prevent the buffer 130 from being filled beyond a maximum size tm. At the client 120, the stream 110 is played in order without permanent storage of the stream 110 by the client, e.g., no stream content is shown in FIG. 1 to the reverse side of the playhead 122.